#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    void mousePressEvent(QMouseEvent *event);//点击鼠标
    void paintEvent(QPaintEvent *event);//画图
    void add_line(QPoint point);//添加直线
    void cohen_cut(QPoint point1, QPoint point2, QColor color);//裁剪直线
    void suther_cut(QPolygon polygon,QColor color);//多边形裁剪
    void cut();//裁剪
    void swap(QPoint &point1, QPoint &point2);//交换两个点的坐标
    char encode(QPoint point);//判断与裁剪框的四条边的关系
    void find_point(QPoint point1,QPoint point2,int j);//用于寻找多边形交点
    ~MainWindow();


private:
    Ui::MainWindow *ui;
    int type;//裁剪直线还是多边形
    int LINE = 1;
    int POLYGON =2;
    QColor now_color;
    QList<QPoint>points;//储存起点终点
    QPoint window[4];


    struct Line{
        QLine line;
        QColor color;
    };//用于表示一条直线

    struct Polygon{
        QPolygon polygon;
        QColor color;
    };//用于表示一个多边形

    QList<Line> lines;//用于储存所有还没裁剪的直线
    QList<Line> cut_lines;//用于储存所有裁剪好的直线
    QList<Polygon> polygons;//用于储存画的多边形
    QList<Polygon> cut_polygons;//用于储存裁剪的多边形
    QList<QPoint> temppoint;
};
#endif // MAINWINDOW_H
